MongoDB একটি ডকুমেন্ট-ভিত্তিক NoSQL ডাটাবেস যা ডেটার জন্য ইন্ডেক্সিং সমর্থন করে। ইন্ডেক্সিং ডেটার উপর দ্রুত অনুসন্ধান এবং কুয়েরি এক্সিকিউশন পারফরম্যান্স উন্নত করার জন্য অত্যন্ত গুরুত্বপূর্ণ। MongoDB তে বিভিন্ন ধরনের ইন্ডেক্স তৈরি করা যায়, এবং এর মধ্যে Compound Index এবং Text Index অন্যতম।
1. Compound Index in MongoDB:
Compound Index হল এমন একটি ইন্ডেক্স যা একাধিক ফিল্ডের উপর ভিত্তি করে তৈরি করা হয়। MongoDB তে compound index তৈরি করলে এটি একাধিক ফিল্ডের ওপর অনুসন্ধান দ্রুত করতে সাহায্য করে। এই ইন্ডেক্সটি সেই ফিল্ডগুলির সমন্বয়ে তৈরি করা হয় যা একসাথে কুয়েরিতে ব্যবহৃত হয়।
Compound Index এর সুবিধা:
- এটি একাধিক ফিল্ডের উপর ইন্ডেক্স তৈরি করে, যা একটি কুয়েরির জন্য একাধিক শর্তে অনুসন্ধান করতে সক্ষম হয়।
- এটি একটি বা একাধিক শর্তে অনুসন্ধান করার ক্ষেত্রে পারফরম্যান্স উন্নত করে।
Compound Index তৈরি করার উদাহরণ:
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.model.Indexes;
public class CompoundIndexExample {
public static void main(String[] args) {
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("testdb");
MongoCollection<Document> collection = database.getCollection("users");
// Compound Index: Index on both "name" and "age"
collection.createIndex(Indexes.compoundIndex(Indexes.ascending("name"), Indexes.ascending("age")));
// Inserting some sample data
collection.insertOne(new Document("name", "John").append("age", 30));
collection.insertOne(new Document("name", "Jane").append("age", 25));
collection.insertOne(new Document("name", "Alice").append("age", 30));
// Querying with the compound index
Document query = new Document("name", "John").append("age", 30);
Document result = collection.find(query).first();
System.out.println(result.toJson());
mongoClient.close();
}
}
ব্যাখ্যা:
- এখানে, compound index তৈরি করা হয়েছে "name" এবং "age" ফিল্ডের উপর, যার ফলে এই দুইটি ফিল্ডের জন্য দ্রুত অনুসন্ধান করা সম্ভব।
createIndex(Indexes.compoundIndex())মেথডের মাধ্যমে ইন্ডেক্স তৈরি করা হয়েছে।- তারপর, name এবং age ফিল্ডের ওপর query করা হয়েছে, যা compound index দ্বারা দ্রুত এক্সিকিউট হবে।
2. Text Index in MongoDB:
Text Index MongoDB-তে ব্যবহৃত একটি বিশেষ ধরনের ইন্ডেক্স যা ডকুমেন্টের মধ্যে টেক্সট ডেটার ওপর অনুসন্ধান করতে সাহায্য করে। এটি মূলত string ধরনের ডেটা (যেমন টাইটেল, কন্টেন্ট) এবং পুরো ডকুমেন্টে full-text search কার্যক্রম চালাতে ব্যবহৃত হয়। Text index MongoDB তে টেক্সট ফিল্ডের জন্য text search অপারেশন চালানোর জন্য অত্যন্ত গুরুত্বপূর্ণ।
Text Index এর সুবিধা:
- MongoDB তে full-text search করার জন্য text index ব্যবহার করা হয়।
- এটি বিভিন্ন টেক্সট ফিল্ডে (যেমন, নাম, বর্ণনা, কন্টেন্ট) ডেটা অনুসন্ধান দ্রুততর করতে সহায়তা করে।
Text Index তৈরি করার উদাহরণ:
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.model.Indexes;
public class TextIndexExample {
public static void main(String[] args) {
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("testdb");
MongoCollection<Document> collection = database.getCollection("articles");
// Creating a text index on the "title" and "content" fields
collection.createIndex(Indexes.text("title"));
collection.createIndex(Indexes.text("content"));
// Inserting some sample data
collection.insertOne(new Document("title", "MongoDB Guide").append("content", "MongoDB is a NoSQL database"));
collection.insertOne(new Document("title", "Java Programming").append("content", "Java is a programming language"));
collection.insertOne(new Document("title", "Learn MongoDB").append("content", "MongoDB is widely used in web development"));
// Querying using text search
Document query = new Document("$text", new Document("$search", "MongoDB"));
Document result = collection.find(query).first();
System.out.println(result.toJson());
mongoClient.close();
}
}
ব্যাখ্যা:
createIndex(Indexes.text("field_name"))মেথড ব্যবহার করে text index তৈরি করা হয়, যাতে "title" এবং "content" ফিল্ডে টেক্সট অনুসন্ধান করা যায়।$textএবং$searchঅপারেটরের মাধ্যমে টেক্সট অনুসন্ধান করা হয়, যেখানে "MongoDB" শব্দটি অনুসন্ধান করা হচ্ছে।
Output:
{"_id": ObjectId("..."), "title": "MongoDB Guide", "content": "MongoDB is a NoSQL database"}
Compound Index এবং Text Index এর মধ্যে পার্থক্য:
| Feature | Compound Index | Text Index |
|---|---|---|
| Purpose | একাধিক ফিল্ডের ওপর ইন্ডেক্স তৈরি করতে ব্যবহৃত | টেক্সট ফিল্ডে full-text search করতে ব্যবহৃত |
| Fields Supported | একাধিক ফিল্ডের ওপর (যেমন: name, age) | শুধুমাত্র string টাইপ ফিল্ড (যেমন: title, content) |
| Query Type | সাধারণ কুয়েরি যেমন find, update | টেক্সট অনুসন্ধান কুয়েরি যেমন $text, $search |
| Use Case | যেকোনো ফিল্ডের ওপর দ্রুত অনুসন্ধান | টেক্সট ফিল্ডে শব্দ বা বাক্য অনুসন্ধান |
| Index Creation | Indexes.compoundIndex() | Indexes.text() |
- Compound Index এবং Text Index MongoDB তে query পারফরম্যান্স অপটিমাইজেশনের জন্য শক্তিশালী টুলস। Compound Index একাধিক ফিল্ডের জন্য ইন্ডেক্স তৈরি করে, যা একাধিক শর্তের উপর অনুসন্ধান দ্রুত করে, এবং Text Index টেক্সট ডেটাতে full-text search কার্যক্রম চালানোর জন্য ব্যবহৃত হয়।
- MongoDB তে indexing একটি গুরুত্বপূর্ণ অংশ যা ডেটা অনুসন্ধান এবং পারফরম্যান্স অপটিমাইজেশনে গুরুত্বপূর্ণ ভূমিকা পালন করে।
Read more